Глава 6. Командный интерфейс
Командный интерфейс ‑ это основное средство доступа пользователя к функциональности приложения, средство, которое позволяет перемещаться между формами и выполнять те или иные действия. Разработчик конфигурации не прописывает детально команды глобального интерфейса и командных панелей форм для каждой реализуемой в приложении роли пользователя (или комбинации таких ролей), а описывает те правила, по которым командный интерфейс будет автоматически формироваться для пользователя.
Формирование командного интерфейса выполняется в зависимости от прав пользователя (см. здесь), функциональных опций приложения (см. здесь) и, наконец, настроек самого пользователя.
Такое декларативное описание командного интерфейса помогает решить задачу согласования предоставленных пользователю команд и прав пользователя на выполнение тех или иных действий, а также задачу модификации командного интерфейса приложения при неполном внедрении возможностей приложения.
6.1. Общее устройство командного интерфейса
6.1.1. Разделы и подразделы основного окна приложения
Все глобальные команды основного окна приложения объединяются в разделы. Переход между ними осуществляется при помощи панели разделов. Состав этих разделов однозначно определяется составом подсистем верхнего уровня, для которых установлен признак Включать в командный интерфейс.
Команды текущего раздела отображаются в панели навигации и панели действий основного окна.
При отображении команд того или иного раздела в панели навигации возможно появление одного или нескольких «подразделов», каждый из которых ‑ это совокупность команд, соответствующих подчиненной подсистеме (также с признаком Включать в командный интерфейс). Например, в разделе Торговый учет возможно появление подразделов Розничная торговля и Оптовая торговля за счет существования соответствующих подчиненных подсистем.
6.1.2. Виды команд
Командный интерфейс пользователя можно разделить:
● на независимые глобальные команды,
● параметризуемые глобальные команды,
● локальные команды формы.
В рамках данного раздела мы будем рассматривать только глобальные команды (описание локальных команд формы см. здесь). С другой стороны, команды делятся:
● на стандартные команды (автоматически добавляемые системой в командный интерфейс);
● навигационные команды;
● команды действия;
● команды, созданные в конфигурации.
6.1.2.1. Стандартные команды
Для большинства объектов конфигурации система предоставляет стандартные команды, которые автоматически помещаются в командный интерфейс. Ниже приведен список таких объектов и стандартные команды, которые для них предоставляет система:
● Общая форма:
● Открыть общую форму;
● Константы:
● Открыть форму редактирования константы;
● Справочники:
● Открыть форму списка;
● Открыть форму нового;
● Открыть форму новой группы;
● Ввод на основании;
● Перейти к списку с отбором по владельцу;
● Документы:
● Открыть форму списка;
● Открыть форму нового;
● Ввод на основании;
● Журналы документов:
● Открыть форму списка;
● Отчеты:
● Открыть основную форму;
● Обработки:
● Открыть основную форму;
● План видов характеристик:
● Открыть форму списка;
● Открыть форму нового;
● Открыть форму новой группы;
● Ввод на основании;
● Планы счетов:
● Открыть форму списка;
● Открыть форму нового;
● Ввод на основании;
● Планы видов расчета:
● Открыть форму списка;
● Открыть форму нового;
● Ввод на основании;
● Перечисления:
● Открыть форму списка;
● Регистры сведений:
● Открыть форму списка;
● Открыть форму нового;
● Перейти к списку с отбором по регистратору;
● Регистры накопления:
● Открыть форму списка;
● Перейти к списку с отбором по регистратору;
● Регистры бухгалтерии:
● Открыть форму списка;
● Перейти к списку с отбором по регистратору;
● Регистры расчета:
● Открыть форму списка;
● Перейти к списку с отбором по регистратору;
● Бизнес-процессы:
● Открыть форму списка;
● Открыть форму нового;
● Ввод на основании;
● Перейти к списку задач с отбором по бизнес-процессу;
● Задачи:
● Открыть форму списка;
● Открыть форму нового;
● Ввод на основании;
● Планы обмена:
● Открыть форму списка;
● Открыть форму нового;
● Ввод на основании;
● Критерии отбора:
● Открыть форму списка.
6.1.2.1.1. Формирование и размещение стандартных команд
Стандартные команды открытия формы списка и создания нового элемента формируются всегда, если не выключено свойство Использовать стандартные команды.
Стандартная команда отчета формируется, если у отчета задана основная схема компоновки данных или задана основная или дополнительная форма.
Стандартная команда обработки формируется, если у обработки задана основная или дополнительная форма.
Стандартные команды для ввода на основании создаются системой в том случае, если соответствующим образом задано свойство Ввод на основании. Например, если для справочника Товары и для справочника Партии товаров сказано, что на их основании возможен ввод документов Приходная накладная и Расходная накладная, то у справочников появится стандартная команда ввода на основании.
Стандартные команды для открытия формы списка с отбором по владельцу формируются в том случае, если соответствующим образом задано свойство справочника Владельцы, а для регистра сведений есть одно или несколько измерений с признаком Ведущее.
Стандартная команда формы списка с отбором по регистратору формируется для регистров, подчиненных регистратору.
Стандартные команды размещаются следующим образом:
|
Панель |
Размещаемые команды |
|
Панель навигации |
Команды открытия списков |
|
Панель действий |
● Команда открытия формы редактирования констант. ● Команды открытия форм новых объектов. ● Команды открытия форм отчетов и обработок |
|
Панель навигации формы |
Команды открытия формы списка с отборами |
|
Командная панель формы |
Команды ввода на основании |
6.1.2.1.2. Параметризуемые стандартные команды
Некоторые стандартные команды являются параметризуемыми, т. е. могут быть выполнены в контексте той или иной формы, получив в качестве параметра некоторое значение.
|
Команда |
Тип параметра |
|
Ввод на основании |
Ссылка на объект-основание |
|
Открытие списка с отбором по владельцу |
Ссылка на объект-владелец |
|
Открытие списка с отбором по регистратору |
Ссылка на документ-регистратор |
|
Открытие списка критерия отбора |
Ссылка на значение критерия отбора |
О порядке формирования типа параметра стандартных параметризуемых команд см. здесь.
Так, если для справочника Товары и для справочника Партии товаров сказано, что на их основании возможен ввод документа Приходная накладная, то тип параметра команды ввода на основании будет составным: СправочникСсылка.Товары и СправочникСсылка.ПартииТоваров. Поэтому стандартная команда Ввод приходной накладной на основании будет автоматически размещена в формах элементов справочников товаров и партий товаров.
6.1.2.2. Независимые и параметризуемые глобальные команды
Независимые глобальные команды предназначены для выбора пользователем той или иной функциональности в рамках приложения в целом. Выполнение такой команды не требует дополнительной информации (параметров). Это, например, такие команды, как:
● открытие списка справочника,
● открытие журнала документов,
● открытие формы того или иного отчета,
● открытие формы нового элемента справочника и т. д.
Параметризуемые глобальные команды зависят от контекста выполнения и не могут быть выполнены без получения дополнительной информации (параметра выполнения команды). Это, например, такие команды, как:
● открытие списка подчиненного справочника (параметр ‑ ссылка на элемент справочника-владельца);
● открытие списка записей регистра, подчиненного регистратору (параметр ‑ ссылка на документ-регистратор);
● ввод одного объекта на основании другого (параметр ‑ объект, служащий «основанием»).
Параметризуемые команды могут отображаться в панели навигации вспомогательного окна и непосредственно в командной панели формы.
Глобальные команды отображаются в командной панели формы перед командой Открыть справку. При этом команды группы Важное размещаются непосредственно в командной панели, а остальные группы команд (стандартная группа Создать на основании и другие группы категории Командная панель формы) размещаются в виде подменю. Выполнение глобальных команд, размещенных в командной панели формы, приводит к открытию нового вспомогательного окна приложения.
Следует помнить, что глобальные команды не отрабатывают свойство Пометка. Данное свойство предназначено для использования только командами формы (см. здесь).
6.1.2.3. Навигационные команды и команды действия
Навигационными будем называть те команды, которые предназначены для перехода пользователя к очередной форме приложения, не покидая текущее (основное или вспомогательное) окно приложения. Навигационная команда открывает очередную форму в том же окне приложения, в котором команда была вызвана пользователем.
Навигационными могут быть как независимые команды глобального командного интерфейса, так и параметризуемые глобальные команды. Навигационные команды размещаются в панели навигации основного или вспомогательного окна приложения.
Примерами навигационных команд основного окна приложения могут служить команды перехода к списку справочника или журналу документов. Например, команда Валюты откроет в том же окне форму списка валют, а команда Финансовые документы откроет в том же окне форму списка документов.
Примерами навигационных команд вспомогательного окна приложения могут служить команды перехода к спискам, логически подчиненным тому объекту, который редактируется в данном окне. Например, в форме редактирования элемента справочника валют может быть команда перехода к регистру сведений с историей изменения курса валюты; в форме документа может быть команда перехода к его движениям по тому или иному регистру и т. д.
Примечание. Отказ от открытия формы не прерывает выполнение навигационной команды. Использование отказа от открытия формы в навигационных командах приведет к открытию пустой формы.
Командами действия будем называть те команды, выполнение которых, как правило, приводит к открытию нового вспомогательного окна приложения. Такие команды на некоторое время переключают пользователя на выполнение другой задачи, т. е. существенно изменяют контекст его деятельности. Например, команда создания нового документа переводит пользователя от задачи навигации по приложению, выполняемой в основном окне приложения, к задаче ввода нового документа.
Такие команды размещаются в панели действий основного окна приложения или в командной панели формы, отображаемой во вспомогательном окне приложения.
6.1.2.4. Команды, созданные в конфигурации
Кроме стандартных команд разработчик конфигурации может создать свои собственные команды, установить для них место размещения (группу команд), описать на встроенном языке действие, выполняемое при выполнении команд, и т. д.
Более подробно о свойствах объекта Команда см. здесь и см. здесь.
6.1.3. Группы команд
Все глобальные команды по месту своего размещения и по своему характеру делятся на четыре категории.
|
Категория |
Описание |
|
Панель навигации |
Для размещения независимых навигационных команд |
|
Панель навигации формы |
Для размещения параметризуемых навигационных команд, вызываемых из формы |
|
Панель действий |
Для размещения команд, приводящих к появлению нового вспомогательного окна приложения |
|
Командная панель формы |
Для размещения в форме параметризуемых команд, приводящих к появлению нового вспомогательного окна приложения |
Приведенные здесь категории представляют собой перечень тех мест интерфейса приложения, в которых могут отображаться глобальные команды.
Для группировки глобальных команд система реализует стандартные группы команд.
|
Место размещения |
Стандартные группы команд |
|
Панель навигации |
● Важное, ● Обычное, ● См. также |
|
Панель действий |
● Создать, ● Отчеты, ● Сервис |
|
Панель навигации формы |
● Важное, ● Перейти, ● См. также |
|
Командная панель формы |
● Важное, ● Создать на основании |
Кроме того, при разработке конфигурации разработчик может создать собственные группы команд (объект конфигурации Общие ‑ Группы команд, см. здесь), которые можно отнести к одной из перечисленных выше категорий (свойство Категория группы команд). Эти группы могут наряду с предопределенными группами использоваться для размещения в них разрабатываемых команд.
6.2. Построение глобального командного интерфейса
В данном разделе рассмотрены объекты и свойства объектов конфигурации, влияющие на построение глобального командного интерфейса конфигурации.
6.2.1. Подсистемы
Основа формирования глобального командного интерфейса основного окна приложения ‑ структура подсистем конфигурации. Именно подсистемы формируют представление пользователя о функциональности приложения в целом. Структура подсистем описывает для пользователя общую функциональность системы. Таким образом, построение глобального командного интерфейса основного окна приложения «от структуры подсистем» налагает на разработчика определенную ответственность при разработке подсистем конфигурации. Фактически структура подсистем ‑ это первое, что увидит пользователь при ознакомлении с приложением.

Рис. 204. Отображение подсистем в разделы
На структуру командного интерфейса влияют подсистемы, которым установлено свойство Включать в командный интерфейс. Но данное свойство устанавливается подсистемам по умолчанию, и, таким образом, предполагается, что подсистемы создаются в первую очередь именно для описания глобального командного интерфейса. Если в конфигурации нет ни одной подсистемы с установленным свойством Включать в командный интерфейс, то панель разделов не отображается в основном окне приложения.
Подсистемы первого уровня приводят к появлению в приложении разделов ‑ совокупности глобальных команд определенной предметной направленности. Разделы отображаются в панели разделов основного окна приложения. Выбор того или иного раздела изменяет состав команд панели навигации и панели действий.
Подсистемы более низкого уровня приводят к появлению в панели навигации подразделов, в которые собираются команды соответствующей подсистемы.
Принадлежность объекта к тому или иному набору подсистем определяет появление команд объекта в соответствующих фрагментах командного интерфейса конфигурации. Однако новые объекты по умолчанию не принадлежат ни одной подсистеме. Это означает, что команды объекта отсутствуют в командном интерфейсе. Поэтому для помещения стандартных и созданных разработчиком команд объекта в соответствующие фрагменты командного интерфейса необходимо указать, каким подсистемам принадлежит этот объект.
Принадлежность объекта к разным подсистемам является независимой, т. е. объект можно отнести одновременно как к «родительской» и «подчиненной» подсистемам, так и только к «подчиненной», если это целесообразно из соображений формирования командного интерфейса.
Если в конфигурации нет ни одной подсистемы с установленным свойством Включать в командный интерфейс, то на рабочий стол попадают все команды, которые на нем можно было разместить вручную. В этой ситуации меняется внешний вид редактора командного интерфейса рабочего стола: в нем исчезает дерево команд и пропадает возможность удалить команду с рабочего стола.
Как только появляется первая подсистема, включенная в командный интерфейс, автоматическое добавление команд на начальную страницу перестает действовать и команды нужно размещать явно.
Примечание. Режим автоматического размещения на начальной странице всех команд не действует, если у конфигурации установлен режим запуска Обычное приложение.
При формировании панели разделов используются все подсистемы первого уровня, которые соответствуют всем нижеперечисленным условиям:
1. Свойство Включать в командный интерфейс установлено в значение Истина;
2. Права доступа (см. здесь) обеспечивают доступность подсистемы для текущего пользователя;
3. Подсистема не отключена функциональными опциями;
4. Подсистема не отключена пользователем с помощью диалога настройки панели разделов.
В том случае, если в разделе все команды недоступны текущему пользователю (в силу отсутствия прав доступа или команды отключены функциональными опциями или пользовательскими настройками), такой раздел все равно будет отображаться в панели разделов.
6.2.2. Команды
Как говорилось выше, существуют стандартные команды, предоставляемые системой автоматически, и команды, создаваемые разработчиком в конфигурации.
Объект конфигурации Команда может быть создан как подчиненный объект для следующих объектов конфигурации:
● Справочники,
● Документы,
● Журнал документов,
● Отчеты,
● Обработки,
● Планы видов характеристик,
● Перечисления,
● Планы счетов,
● Планы видов расчета,
● Регистры сведений,
● Регистры накопления,
● Регистры бухгалтерии,
● Регистры расчета,
● Бизнес-процессы,
● Задачи,
● Планы обмена,
● Критерии отбора.
Кроме того, возможно создание общих команд (ветка дерева конфигурации Общие ‑ Общие команды, см. здесь).
6.2.3. Параметризация команды
Если команда является параметризуемой, то ее выполнение предполагает получение некоторого значения в качестве параметра. Источником такого значения могут служить только данные формы.
ВНИМАНИЕ! Задавать тип значения параметра команды имеет смысл только для тех команд, которые размещаются в формах (относятся к группам категорий Командная панель формы или Панель навигации формы).
Свойство Тип параметра команды фактически задает состав форм, в контексте которых возможно выполнение данной команды. Например, если команда имеет тип параметра СправочникСсылка.Товары, то она может быть выполнена:
● в форме элемента справочника Товары, где параметром послужит ссылка на редактируемый в форме объект;
● в форме списка справочника Товары, где параметром послужит ссылка из текущей строки списка;
● в форме приходной накладной, где параметром послужит ссылка на товар из текущей строки табличной части документа и т. д.
Количество значений выбранного типа, которые будут переданы команде в качестве значений параметра, определяет свойство Режим использования параметра. Если это свойство установлено в значение Одиночный, то в команду передается одно значение указанного типа.
Если свойство установлено в значение Множественный, то в качестве параметра всегда передается массив значений (даже если выбрано одно значение). Этот режим имеет смысл выбирать тогда, когда источником данных для команды может являться таблица в режиме множественного выделения. В этом случае первым элементом массива будет выступать текущая строка (вне зависимости от последовательности выделения строк табличного поля). Так, если мы имеем список товаров, состоящий из элементов Миксер, Пылесос, Холодильник, Чайник, в котором выделены элементы Миксер, Холодильник и Чайник, а текущей строкой является Холодильник, то команда получит массив следующего содержания (по порядку элементов): Холодильник, Миксер, Чайник. Порядок элементов после первого не определен, несмотря на некоторый порядок, приведенный в примере.
Примечание. Если текущая строка не входит в выделение, то первый элемент в массиве невозможно идентифицировать однозначно.
При размещении на форме нескольких таблиц управляемой формы, связанных с одним реквизитом формы типа ДинамическийСписок, неопределено, данные какой из этих таблиц будут использоваться для параметризации команды.
Формирование фрагментов командного интерфейса форм выполняется автоматически на основании типа основного реквизита. При редактировании формы возможно дополнение фрагмента командного интерфейса разработчиком формы. Например, если форма предназначена для редактирования товара, то в нее автоматически попадут все команды, тип параметра которых ‑ СправочникСсылка.Товары (например, Печать карточки товара, Переход к списку цен товара и т. д.). Если товар имеет реквизит Производитель, то при разработке формы в нее также можно будет включить и команды с типом параметра СправочникСсылка.Контрагент (например, Карточка контрагента, Договора контрагента и т. д.), так как в форме можно получить значение для параметра таких команд. Но такие команды (которые не относятся к основному реквизиту) автоматически не включаются в командный интерфейс, но разработчик может включить их с помощью редактора формы.
Для группы справочника (вид иерархии Иерархия групп и элементов) и иерархического плана видов характеристик не происходит автоматического включения в командный интерфейс формы группы параметризуемых глобальных команд, однако разработчик может включить такие команды в командный интерфейс с помощью редактора формы.
6.2.4. Формирование командного интерфейса по умолчанию
На место размещения команд влияют свойства Тип параметра команды, Группа и принадлежность команды (или родительского объекта) к той или иной подсистеме.
Независимые (т. е. непараметризуемые) команды относятся к фрагментам глобального командного интерфейса, соответствующим подсистемам, в которые включен объект-владелец или сама команда (для общих команд).
Параметризуемые команды относятся к фрагментам глобального командного интерфейса, соответствующим тем объектам, типы которых заданы в свойстве Тип параметра команды.
Группа команд и в первом, и во втором случае ‑ это своеобразное уточнение размещения команды в пределах одного фрагмента. Так, например, группы команд задают, в какой панели (навигации или действий) будут размещены независимые команды того или иного раздела. А для параметризуемых команд группа команд определяет, будет ли команда размещена в панели навигации формы или в командной панели формы.
Таким образом, для независимых команд (команд, не требующих параметра, таких как открытие списка или открытие формы нового объекта) возможность размещения по умолчанию в категории иной, чем панель навигации или панель действий, востребована крайне редко. В свою очередь, размещение параметризуемых команд в панели навигации или панели действия не имеет смысла, так как в контексте основного окна приложения такие команды не могут получить параметры, необходимые для их исполнения. Приведем таблицу расположения команд.
|
|
Независимые команды |
Параметризуемые команды |
|
Навигационные команды |
Панель навигации |
Панель навигации формы |
|
Команды действия |
Панель действий |
Командная панель формы |
Следует помнить, что по умолчанию глобальные команды не попадают в командный интерфейс форм групп иерархических справочников и планов видов характеристик. Для того чтобы глобальная команда была доступна в командном интерфейсе такой формы, ее необходимо разместить там вручную, с помощью редактора формы.
При формировании командного интерфейса используются текстовые представления объектов конфигурации и различных команд. По умолчанию система формирует представления исходя из свойств Синоним и Имя. Однако есть возможность влиять на это представление. Для этого используются представления объекта и списка. Подробнее об этом см. здесь.
6.2.5. Свойство «Командный интерфейс»
Свойства Командный интерфейс (для подсистем), Командный интерфейс (для конфигурации) и Командный интерфейс основного раздела (для конфигурации) предназначены для редактирования состава глобальных команд соответствующего раздела или состава команд основного раздела. Редактирование этих свойств выполняется в том случае, если не устраивает автоматически сформированный порядок команд, группы, к которым отнесены команды в контексте данного раздела, и установленная автоматически видимость по умолчанию.
В разных разделах одна и та же команда может отображаться в разных местах панели навигации или панели действия и может иметь разную видимость по умолчанию. Например, команда открытия списка справочника Товары с точки зрения раздела Торговля является важной и часто используемой, и разработчик может поместить ее в группу Важное. А с точки зрения раздела Бухгалтерский учет не так важна, и разработчик может поместить ее в группу См. также.
Подробнее о редакторе фрагмента командного интерфейса см. здесь и см. здесь.
6.2.6. Редактирование состава команд
Кроме возможности редактирования свойства подсистемы Командный интерфейс при помощи редактора этого свойства существует возможность редактирования состава команд сразу всех разделов в редакторе Все подсистемы (см. здесь).
Редактирование состава глобальных команд, отображаемых в форме, выполняется в редакторе формы, на закладке Командный интерфейс (см. здесь).
6.2.7. Ролевая настройка видимости команд по умолчанию
При автоматическом формировании команд разделов и команд форм устанавливается следующая видимость по умолчанию.
По умолчанию видимы:
● команды открытия списков справочников, документов, журналов документов, планов видов характеристик, планов видов расчета, планов счетов, независимых регистров сведений, бизнес-процессов, задач и планов обмена;
● команды открытия форм отчетов и обработок;
● команда открытия формы редактирования констант;
● команды перехода к списку подчиненного справочника;
● команды перехода к списку логически подчиненного регистра сведений (т. е. регистра с «ведущими» измерениями);
● команды ввода на основании;
● произвольные команды, созданные разработчиком при конфигурировании.
По умолчанию невидимы:
● команды открытия списков перечислений, регистров сведений, подчиненных регистратору, регистров накоплений, регистров бухгалтерии, регистров расчета;
● команды открытия форм нового объекта и новой группы;
● команды перехода к спискам подчиненных регистров;
● команды перехода к спискам критериев отбора.
Эти значения видимости, формируемые системой автоматически, могут быть изменены как для параметризуемых, так и для независимых команд. Причем значение видимости по умолчанию может быть задано в разрезе ролей, применяемых в конфигурации. При отображении команд в режиме 1С:Предприятие команда будет видна по умолчанию, если хотя бы для одной из ролей пользователя задана видимость для данной команды.
При редактировании ролевой видимости следует исходить из того, что видимость команды для той или иной роли вступает в силу только тогда, когда команда доступна для этой роли. Таким образом, при настройке видимости для роли, сильно ограниченной в правах, почти никогда нет необходимости дополнительно скрывать команды, снимая им видимость по умолчанию (общее число доступных команд в том или ином разделе и так невелико).
Ролевое редактирование видимости по умолчанию ‑ это средство, позволяющее настроить начальную «насыщенность» глобального командного интерфейса в первую очередь для пользователей с широкими правами доступа.
6.3. Сервисные возможности навигации
6.3.1. Навигационные ссылки
6.3.1.1. Интерактивная работа
В «1С:Предприятии» имеется возможность получить текстовую ссылку на любой раздел командного интерфейса, отчет, обработку и на объекты информационной базы (документы, элементы справочников и т. д.). Такая ссылка называется навигационной ссылкой. Навигационная ссылка может использоваться для быстрого перехода в нужное место системы, для сохранения в списке избранного работы пользователя, для передачи другому пользователю, на мобильных устройствах и т. д.
Для того, чтобы интерактивным способом получить навигационную ссылку на используемый объект прикладного решения, необходимо использовать команду Получить ссылку меню Сервис и настройки или специальную кнопку формы (рядом с меню формы). Получить ссылку на текущий объект можно с помощью сочетания клавиш Ctrl + F11.

Рис. 205. Команды получения навигационной ссылки
Вызов команды получения навигационной ссылки приводит к появлению диалога следующего вида:

Рис. 206. Диалог получения ссылки
В данном диалоге показывается объект, на который будет получена ссылка (поле Ссылка на) и предоставляется возможность выполнить следующие действия:
● Гиперссылка Показать ссылку приводит к тому, что на месте гиперссылки формируется поле ввода, в котором отображается текст навигационной ссылки, с которой оперирует данный диалог.
● Тумблер Внешняя ссылка позволяет преобразовать навигационную ссылку во внешнюю. При этом к внутренней ссылке префиксом подставляется адрес информационной базы.
● Тумблер Копировать название предназначена для того, чтобы добавить к копируемой ссылке представление этой ссылки. В результате строка будет иметь следующий вид:
● Внутренняя ссылка: Продажа 000000012 от 28.04.2008 10:54:24: e1cib/data/Документ.РасходТовара?ref=8ca0000d8843cd1b11dc8d043d710081.
● Внешняя ссылка: Продажа 000000012 от 28.04.2008 10:54:24: e1c://server/srv-name/db-name#e1cib/data/Документ.РасходТовара?ref=8ca0000d8843cd1b11dc8d043d710081.
● Для разделения представления и текста ссылки можно попробовать использовать строку : e1c.
● Скопировать навигационную ссылку в буфер обмена и закрыть диалог. Для этого предназначена кнопка Копировать и закрыть, которая является командой по умолчанию в данном диалоге.
● Гиперссылка Добавить в избранное добавляет текущую навигационную ссылку в список избранного текущего пользователя. Диалог при этом не закрывается.
После нажатия гиперссылки Показать ссылку, диалог принимает следующий вид:

Рис. 207. Отображение навигационной ссылки
Полученную ссылку можно сохранить и использовать в дальнейшем для перехода по ней. Так как ссылки являются текстовыми, то их можно отправлять другим пользователям, например, по электронной почте. Описание форматов ссылок см. здесь. Не поддерживается возможность получения навигационной ссылки на стандартные функции. Как следствие ‑ стандартные функции нельзя поместить в избранное. Для быстрого вызова стандартных функций можно использовать поле глобального поиска (подробнее см. здесь).
Навигационную ссылку можно использовать для запуска клиентского приложения с одновременным открытием объекта, закодированного в ссылке. Если информационная база опубликована на веб-сервере, то можно получить внешнюю навигационную ссылку. Такая ссылка будет представлять собой обычный URL, который можно указать в строке ввода адреса веб-браузера.
Примечание. В Microsoft Internet Explorer не происходит загрузка приложения с переходом по ссылке, если ссылка относится к приложению, загруженному в текущем окне веб-браузера. Рекомендуется вводить ссылку в адресную строку нового пустого окна веб-браузера.
Если необходимо использовать тонкий клиент, то навигационную ссылку можно использовать в качестве значения команды URL командной строки запуска клиетского приложения. Подробнее о переходе по навигационной ссылке с помощью параметра URL Внимание! Неправильная ссылка!.
Возможны ситуации, когда в одном форме приложения можно получить несколько навигационных ссылок. В этом случае в диалоге получения навигационной ссылки будет предоставляться выбор получаемой ссылки. Например, в отчете Остатки товаров выбран вариант Основной и выполнены какие-то настройки. Тогда при попытке получения навигационной ссылки будет показан диалог следующего вида:

Рис. 208. Получение нескольких видов навигационной ссылки
В зависимости от выбранного вида будет сформирована необходимая навигационная ссылка. Внешний вид диалога (в части предоставляемых вариантов вида ссылки) зависит от того, в какой форме вызван диалог получения навигационной ссылки.
При добавлении навигационной ссылки в список избранного, диалог будет иметь немного другой вид.

Рис. 209. Добавление в избранное
В данном диалоге не предоставляется возможность получения внешней ссылки и просмотра навигационной ссылки. В остальном возможности диалога совпадают с возможностями диалога получения навигационной ссылки.
6.3.1.2. Использование из встроенного языка
Кроме интерактивного способа получения ссылки, платформа «1С:Предприятие» предоставляет программный способ формирования навигационной ссылки. Для этого предназначено семейство методов ПолучитьНавигационнуюСсылку…(). Метод ПолучитьНавигационнуюСсылку() позволяет получить нужную навигационную ссылку для любого объекта конфигурации (для которого поддерживается получение навигационной ссылки), а в расширениях форм клиентского приложения существуют специализированные методы. Эти методы получают навигационную ссылку для основного реквизита формы. Метод ПолучитьНавигационнуюСсылкуИнформационнойБазы() позволяет получить адрес информационной базы для формирования внешней навигационной ссылки на основании внутренней (аналогично тумблеру Внешняя ссылка диалога получения ссылки).
Особенностью методов получения навигационных ссылок является возможность передачи в открываемую форму списка параметров. Для этого в методах ПолучитьНавигационнуюСсылку…() есть параметр ВнешниеДанныеНавигационнойСсылки. Данный параметр предсталвяет собой структуру, которая помещается в хранилище внешних параметров навигационных ссылок, адрес которого помещается в навигационной ссылке, в качестве значения параметра extdata.
При открытии формы, если в навигационной ссылке обнаруживается параметр extdata, платформа выполняет следующие действия:
● Создается форма и для формы заполняются все необходимые параметры по умолчанию.
● Из хранилища внешних данных навигационных ссылок получается структура параметров.
● Параметры переносятся из восстановленной структуры в коллекцию Параметры открываемой формы. Каждая пара «ключ-значение» из структуры является отдельным параметром коллекции Параметры.
● Форма открывается с новым набором параметров.
При вызове команды с помощью навигационной ссылки, параметры, которые передаются через хранилище внешних данных навигационных ссылок, попадают в обработчик команды (метод ОбработкаКоманды()) в виде значения свойства Параметры параметра ПараметрыВыполненияКоманды.
6.3.1.3. Действия при получении ссылки и добавлении в избранное
Когда пользователь в форме выполняет команду получения навигационной ссылки или добавления в избранное работы пользователя, то в диалоге получения ссылки платформа вызывает несколько обработчиков событий этой формы. Основное отличие диалогов заключается в том, что диалог добавления в избранное не предполагает: получение навигационной ссылки на объект таблицы, отображающей динамический список; формирование внешней ссылки и возможность просмотра сформированной ссылки. Общая схема работы для получения навигационной ссылки выглядит следующим образом:
1. Последовательно вызываются обработчики получения списка навигационных ссылок (ОбработкаПолученияСпискаНавигационныхСсылок()). Если активным элементов формы является таблица, отображающая динамический список объектов, поддерживающих получение навигационной ссылки, то вначале вызывается обработчик этой таблицы. Затем платформа формирует список навигационных ссылок по умолчанию для текущей формы. Список навигационных ссылок, полученных из обработчика таблицы добавляется в конец списка по умолчанию. Затем всегда вызывается обработчик события для формы, в которой выполняется получение навигационной ссылки. В обработчик события формы попадет список навигационных ссылок, который получен во время предыдущих действий.
2. Разработчик имеет возможность в каждом из указанных обработчиков выполнить доработку формируемого списка: удалить лишнее и добавить недостающее. Повторимся, что в обработчике события формы в списке навигационных ссылок будут и ссылки, которые сформированы самой платформой и те ссылки, которые получены после завершения работы обработчика события таблицы формы. В результате формируется список навигационных ссылок, из которого пользователю будет необходимо сделать выбор.
3. Пользователю отображается диалог выбора необходимой навигационной ссылки. В этом списке отображаются все навигационные ссылки, которые сформированы предшествующими обработчиками получения списка навигационных ссылок.
4. Пользователь выбирает нужную ссылку.
5. Вызывается обработчик получения навигационной ссылки (ОбработкаПолученияНавигационнойСсылки()). Вызываемый обработчик зависит от того, откуда получена выбранная пользователем навигационная ссылка: из таблицы динамического списка или из формы. Соответственно может быть вызван обработчик или таблицы, или формы. Результат работы обработчика используется системой для дальнейших действий.
Рассмотрим более подробно различные аспекты общей схемы работы. Список подготавливаемых навигационных ссылок хранится в объекте СписокВыбораНавигационнойСсылки, который является коллекцией объектов ОписаниеЭлементаСпискаВыбораНавигационнойСсылки. Описание элемента списка выбора состоит из следующих свойств:
● Ключ ‑ значение, которое используется для однозначной идентификации навигационной ссылки в списке.
● Представление ‑ то, каким образом будет представлена навигационная ссылка в диалоге получения ссылки.
● ЗапрашиватьПользовательскоеПредставление ‑ если установлено в значение Истина, то пользователь может указать собственное представление для навигационной ссылки, которая будет отображаться в избранном и использовано для сохранения внешних данных ссылки. Если это свойство установлено в значение Ложь, то в качестве представления будет использоваться значение одноименного свойства.
При вызове обработчика события получения списка навигационных ссылок, платформа формирует список навигационных ссылок по умолчанию. В этом списке в качестве ключа используется какое-либо значение системного перечисления ВариантСтандартнойНавигационнойСсылкиФормы. Создаваемый список зависит от того, какое событие вызывается. Если событие вызывается для таблицы, то состав списка зависит от свойства таблицы РазрешитьПолучатьНавигационнуюСсылкуТекущейСтроки. Если это свойство сброшено, то список будет пустой. Если свойство установлено в значение истина, то список будет состоять из следующих элементов:
● Первый элемент:
● Ключ: ВариантСтандартнойНавигационнойСсылкиФормы.ОбъектТекущейСтрокиСписка или ВариантСтандартнойНавигационнойСсылкиФормы.ЗаписьТекущейСтрокиСписка.
● Представление: представление навигационной ссылки текущей строки динамического списка.
● Запрашивать пользовательское представление: нет.
Если событие вызывается для формы, то список будет состоять из следующих элементов:
● Если форма является формой динамического списка, то список состоит из следующих элементов:
● Первый элемент:
● Ключ: ВариантСтандартнойНавигационнойСсылкиФормы.Список.
● Представление: <представление списка>.
● Запрашивать пользовательское представление: нет.
● Второй элемент:
● Ключ: ВариантСтандартнойНавигационнойСсылкиФормы.СписокСТекущимиНастройками.
● Представление: <представление списка> с текущими настройками.
● Запрашивать пользовательское представление: да.
● Третий элемент:
● Ключ: ВариантСтандартнойНавигационнойСсылкиФормы.СписокСТекущимиНастройкамиИСтрокой.
● Представление: <представление списка> с текущими настройками и строкой.
● Запрашивать пользовательское представление: да.
● Если форма является формой отчета, то список состоит из следующих элементов:
● Первый элемент:
● Ключ: ВариантСтандартнойНавигационнойСсылкиФормы.Отчет.
● Представление: <представление отчета>.
● Запрашивать пользовательское представление: нет.
● Второй элемент:
● Ключ: ВариантСтандартнойНавигационнойСсылкиФормы.ВариантОтчета.
● Представление: <представление отчета> (Вариант: <представление варианта>).
● Запрашивать пользовательское представление: нет.
● Третий элемент:
● Ключ: ВариантСтандартнойНавигационнойСсылкиФормы.ОтчетСТекущимиНастройками.
● Представление: <представление отчета> (Вариант: <представление варианта>) с текущими настройками.
● Запрашивать пользовательское представление: да.
● Для всех остальных форм, отображающих ссылочные объекты или записи регистров, список состоит из одного элемента:
● Ключ: ВариантСтандартнойНавигационнойСсылкиФормы.Объект или ВариантСтандартнойНавигационнойСсылкиФормы.Запись.
● Представление: <представление обработки>.
● Запрашивать пользовательское представление: нет.
При этом список, который попадает в обработчик ОбработкаПолученияСпискаНавигационныхСсылок() формы, будет включать в себя список, который получен из одноименного обработчика таблицы, если таковой вызывался.
Прикладное решение может изменить (частично или полностью) список навигационных ссылок, которые сформировала платформа. Это можно сделать со своей частью списка в любом из обработчиков. Также имеется возможность изменить тот вариант навигационной ссылки, который будет отмечен по умолчанию в диалоге получения ссылки. Для этого предназначен параметр КлючПоУмолчанию обработчика ОбработкаПолученияСпискаНавигационныхСсылок(). В этот параметр необходимо поместить значение свойства Ключ необходимой ссылки из коллекции СписокВыбораНавигационнойСсылки.
Список, сформированный прикладным решением (как уже было сказано ранее) будет представлен пользователю для выбора нужной ссылки. В тот момент, когда пользователь захочет использовать выбранный вариант ссылки (показать это значение, скопировать ссылку в буфер обмена или добавить в избранное), платформа вызовет еще один обработчик: ОбработкаПолученияНавигационнойСсылки(). Будет вызван обработчик того элемента формы, который сформировал выбранную пользователем ссылку. В этот обработчик передаются параметры выбранной пользователем навигационной ссылки. В коде обработчика можно изменять значения параметров НавигационнаяСсылка и СтандартнаяОбработка. От значений этих параметров после выхода из обработчика зависит дальнейшее поведение системы:
● Если параметр СтандартнаяОбработка установлен в значение Ложь, то используется значение из параметра обработчика НавигационнаяСсылка.
● Если параметр СтандартнаяОбработка установлен в значение Истина, то поведение зависит от значения параметра обработчика Ключ:
● Параметр равен значению системного перечисления ВариантСтандартнойНавигационнойСсылкиФормы ‑ формируется соответствующая стандартная ссылка.
● Параметр не равен значению системного перечисления ВариантСтандартнойНавигационнойСсылкиФормы ‑ ссылка не создается и формируется исключение.
При входе в обработчик ОбработкаПолученияНавигационнойСсылки(), значение параметра СтандартнаяОбработка формируется платформой по следующим правилам:
● Параметр равен значению Истина в одном из следующих случаев:
● Значение параметра Ключ равно одному из стандартных вариантов.
● Значение параметра Ключ равно Неопределено и свойство формы АвтоНавигационнаяСсылка установлено в значение Ложь.
● Параметр равен значению Ложь в одном из следующих случаев:
● Параметра Ключ установлен в одно из значений, которое добавлено в обработчике ОбработкаПолученияСпискаНавигационныхСсылок().
● Значение параметра Ключ равно Неопределено и свойство формы АвтоНавигационнаяСсылка установлено в значение Истина.
Если прикладному решению требуется передать в диалог получения навигационной ссылки ссылку, которая позволит параметризовать открываемую форму, то сделать это можно следующим образом:
● В обработчике ОбработкаПолученияСпискаНавигационныхСсылок() к списку описаний ссылок значение, которое потом можно будет однозначно идентифицировать, например, по значению ключа.
● В обработчике ОбработкаПолученияНавигационнойСсылки() значения параметров формы помещаются в структуру. Структура с параметрами помещается в другую структуру с ключом ЗначенияПолей. Вторая структура ПолучитьНавигационнуюСсылку() в качестве параметра ВнешниеДанныеНавигационнойСсылки. Полученная ссылка возвращается из обработчика.
При переходе по этой ссылке сохраненная структура читается из хранилища, и содержащаяся в ней структура со значениями полей передается форме в качестве значения параметра ЗначенияПолей. В обработчике ПриСозданииНаСервере() форма может использовать параметры нужным способом.
6.3.1.4. Действия при переходе по навигационной ссылке
При использовании навигационной ссылки вызывается обработчик события ОбработкаПереходаПоНавигационнойСсылке. Этот обработчик будет вызван при интерактивном использовании навигационной ссылки в приложении, при использовании метода ПерейтиПоНавигационнойСсылке(), при использовании глубинных ссылок мобильного приложения, при переходе по внешней навигационной ссылке и т. д. Описываемый обработчик находится в модуле клиентского приложения. Под интерактивным использованием навигационной ссылки в приложении понимается одно из следующих действий: использование диалога перехода по ссылке, использование избранного работы пользователя, использование истории работы пользователя.
Описание навигационной ссылки, которая используется для перехода, передается с помощью параметра ДанныеПереходаПоНавигационнойСсылке. Данный параметр содержит следующую информацию:
● Запуск ‑ если свойство имеет значение Истина, то это значит, что клиентское приложение было запущено для обработки навигационной ссылки. Если свойство имеет значение Ложь ‑ переход по навигационной ссылке выполняется в уже запущенном приложении.
● БазоваяНавигационнаяСсылка ‑ содержит адрес хоста информационной базы. Другими словами ‑ это адрес информационной базы, в которой выполняется обработка перехода по навигационной ссылке.
● ОтносительнаяНавигационнаяСсылка ‑ это свойство содержит внутреннюю навигационную ссылку (включая все параметры). Внешняя навигационная ссылка получится комбинацией свойств БазоваяНавигационнаяСсылка и ОтносительнаяНавигационнаяСсылка.
● ПараметрыНавигационнойСсылки ‑ в свойстве находится Соответствие, которое содержит параметры навигационной ссылки (ref, extdata, stgng и т. д.). Платформа выполнила разбор ссылки и все ее параметры разместила в этой свойство.
● ДополнительныеДанныеПереходаВМобильноеПриложение ‑ дополнительные параметры, которые будут заполнены в случае, если переход в приложение выпол выполнен с помощью объекта Intent в ОС Android. В остальных случаях это свойство равно значению Неопределено.
Параметр СтандартнаяОбработка определяет, будет платформа выполнять переход по навигационной ссылке (параметр равен Истина) или не будет (параметр равен Ложь). Таким образом, если в данном обработчике разместить только одну строку, которая устанавливает параметр СтандартнаяОбработка в значение Ложь ‑ в этом прикладном решении станет невозможно использовать навигационные ссылки. В то же время, такая установка значения параметра может быть использована в том случае, если навигационная ссылка требует какого-либо специфического действия, а не просто открытие формы конфигурации.
Смотри также:
● Формат навигационной ссылки (см. здесь).
● Запуск мобильного приложения из внешних источников (см. здесь).
6.3.1.5. Форма и навигационные ссылки
Форма клиентского приложения содержит несколько свойств, управляющих значением навигационной ссылки формы: АвтоНавигационнаяСсылка и НавигационнаяСсылка. Кроме этого, у элемента формы Таблица есть свойство РазрешитьПолучатьНавигационнуюСсылкуТекущейСтроки, которое управляет получением навигационной ссылки в случае, если таблица отображает динамический список.
Свойство «АвтоНавигационнаяСсылка»
Свойство АвтоНавигационнаяСсылка управляет автоматическим формированием навигационной ссылкой, которая соответствует форме. Свойство НавигационнаяСсылка содержит значение навигационной ссылки, которое будет соответствовать форме, для которой сброшен флажок АвтоНавигационнаяСсылка. Платформа не изменяет значение свойства НавигационнаяСсылка.
Свойство АвтоНавигационнаяСсылка учитывается методом ОкноКлиентскогоПриложения.ПолучитьНавигационнуюСсылку(). Также свойство АвтоНавигационнаяСсылка учитывается при интерактивном получении навигационной ссылки (или добавлении в избранное работы пользователя). Подробнее об этом см. здесь.
Свойство «НавигационнаяСсылка»
В методах открытия формы существует параметр НавигационнаяСсылка. Если этот параметр не равен значению Неопределено, то значение этого параметра будет установлено в качестве значения свойства формы НавигационнаяСсылка, а свойство АвтоНавигационнаяСсылка в этом случае будет установлено в значение Ложь. Если форма установит свойство АвтоНавигационнаяСсылка в значение Истина, то свойство НавигационнаяСсылка будет игнорировать, даже если этой свойство содержит какое-то значение.
Свойство «РазрешитьПолучатьНавигационнуюСсылкуТекущейСтроки»
У элемента формы Таблица существует свойство РазрешитьПолучатьНавигационнуюСсылкуТекущейСтроки, которое управляет возможностью получение навигационной ссылки для текущей строки динамического списка. (кроме регистра сведений, подчиненного регистратору)
Если этой свойство установлено, и текущая строка динамического списка поддерживает навигационную ссылку, то при попытке получения навигационной ссылки, в параметр СписокНавигационныхСсылок обработчик ОбработкаПолученияСпискаНавигационныхСсылок() будет добавлена навигационная ссылка на объект (или запись регистра) текущей строки динамического списка.
Если свойство РазрешитьПолучатьНавигационнуюСсылкуТекущейСтроки не установлено, то навигационная ссылка для объекта (или записи регистра) текущей строки не будет сформирована.
Смотри также:
● Действия при получении навигационной ссылки пользователем (см. здесь).
6.3.2. Оповещения пользователя
Механизм оповещений предназначен для информирования пользователей о том, что система выполнила то или иное действие. Оповещения могут создаваться системой или разработчиком прикладного решения. Система создает оповещения при интерактивной записи/изменении объекта, а разработчик ‑ вызовом метода ПоказатьОповещениеПользователя(). Оповещения могут иметь различный статус и позволяют реализовать возможность выполнить действие при нажатии на оповещение.
Оповещение отображается в окне, расположение которого зависит от статуса оповещения, используемого клиентского приложения и настроек операционной системы. Если при формировании оповещения была реализована возможность выполнить какое-либо действие, то оповещение будет одновременно являться гиперссылкой, а нажатие левой кнопки мыши на оповещении приведет к выполнению действия, указанного при создании оповещения. Если оповещение сформировано системой при интерактивной записи/изменения объекта, то нажатие левой кнопки мыши по такому оповещению будет приводить к открытию объекта.
Оповещения могут иметь разный статус: важные и информационные. Различаются внешний вид и поведение оповещений с разными статусами. Статус оповещения задается параметром СтатусОповещенияПользователя метода ПоказатьОповещениеПользователя().

Рис. 210. Вид «информационного» оповещения
Оповещение со статусом Информация обладает следующими особенностями:
● Оповещение можно перемещать по экрану.
● Имеется возможность изменять размер оповещения.
● Система запоминает положение и размер окна оповещения.
● Оповещение отображается без затухания в течение 1 секунды и полностью исчезает с экрана через 5 секунд.
● В веб-клиенте оповещение может отображаться только в рамках основного окна приложения и только если приложение активно.
● Пропущенные оповещения невозможно «восстановить» (факт их отображения нигде не запоминается).

Рис. 211. Вид «важного» оповещения
Оповещение со статусом Важное обладает следующими особенностями:
● Оповещение имеет фиксированные размеры и местоположение. Размеры и расположение окон оповещений не может быть изменено.
● Оповещения отображаются даже в том случае, если основное окно приложения свернуто.
● Оповещение отображается в течение 10 секунд, а при работе с использованием веб-браузера Microsoft Edge ‑ 4 секунды. После этого окно оповещение исчезает без затухания.
● Для работы с оповещениями предназначен центр сообщений. Если оповещение со статусом Важное было пропущено пользователем ‑ то в центре сообщений факт отображения такого оповещения будет сохранен.
● Количество одновременно отображаемых оповещений зависит от клиентского приложения и используемой операционной системы:
● тонкий, толстый клиент и веб-браузер Microsoft Internet Explorer ‑ до 3-х оповещений;
● веб-браузер Google Chrome ‑ до 3-х оповещений;
● веб-браузер Mozilla Firefox ‑ неограниченное количество оповещений;
● веб-браузер Microsoft Edge ‑ последнее оповещение;
● веб-браузер Safari ‑ последнее оповещение, если в настрйоках оповещений установлен тип Баннер или неограниченное количество оповещений, если в настройках оповещений установлен тип Предупреждение;
● если пользователь запретил оповещения в веб-браузере для сайта с приложением, то оповещения отображаются внутри основного окна приложения. В этом случае одновременно отображается не более 3-х оповещений.
Чтобы нажатие левой кнопки мыши на оповещении приводило к выполнению какого-либо действия, необходимо указать параметр ДействиеПриНажатии при вызове метода ПоказатьОповещениеПользователя(). Этот параметр может принимать значения двух разных типов. В зависимости от типа значения будет различаться поведение системы:
● Тип Строка ‑ в этом случае ожидается, что параметр содержит навигационную ссылку на объект информационной базы.
● Объект ОписаниеОповещения ‑ в этом случае при выполнении действия (нажатии левой кнопки мыши) будет вызван обработчик, ссылка на который указана при создании объекта ОписаниеОповещения. Разработчик может сам реализовать требуемую реакцию на действие с оповещением.
В зависимости от статуса сообщения, выполнение действия активируется при нажатии на разные части оповещения:
● статус Важное: для выполнения действия достаточно нажать на любую точку оповещения.
● статус Информация: для действия необходимо нажать только на отображаемую гиперссылку.
Предоставляется возможность обновлять ранее отображенные оповещения. Например, в оповещении выводится количество задач, которые пользователю необходимо согласовать. В этом случае логично, чтобы появление каждой новой задачи не приводило к появлению нового оповещения, а обновляло информацию существующего оповещения. Для реализации такого поведения предназначен параметр КлючУникальности. Если на момент вызова метода ПоказатьОповещениеПользователя() уже существует оповещение с ключем уникальности, равным соответствующему параметру метода, то существующее оповещение будет закрыто и будет сформировано новое оповещение с обновленной информацией и тем же ключем уникальности. При этом новое оповещение может не отобразиться на экране, т. к. одновременно отображается ограниченное количество оповещений и новое оповещение может попасть в очередь оповещений, ожидающих отображения. Если оповещения с таким ключем уникальности нет ‑ будет создано и отображено новое оповещение. Системные оповещения имеют статус Информация, а в качестве значения ключа уникальности содержат навигационную ссылку объекта, редактируемого формой. Параметр КлючУникальности используется только при работе в интерфейсе Такси.
Недоступно какое-либо оформление текста, который выводится в оповещениях.
Смотри также:
● Навигационные ссылки (см. здесь).
● Синхронные и асинхронные методы работы (см. здесь).
● Центр оповещений (см. здесь).
6.3.3. Отображение состояния длительных процессов
В процессе разработки конфигурации возникают ситуации, когда необходимо информировать пользователя системы о состоянии выполнения длительных процессов (например, расчет зарплаты по подразделению). Для этого предназначена панель состояния.
Панель состояния отображается вызовом метода Состояние() и недоступна для вызова на стороне сервера. В том случае, если необходимо отобразить на клиенте состояние длительного процесса, протекающего на сервере, нужно реализовать этот процесс таким образом, чтобы он мог выполняться на сервере «порциями», которые будут инициироваться со стороны клиента. Тогда одновременно со стартом очередной «порции» на сервере можно будет отображать изменение состояния выполнения процесса. Панель состояния отображается в окне, которое по умолчанию расположено в правом нижнем углу рабочей области экрана.

Рис. 212. Окно отображения состояния
Если требуется отображать ход выполнения процесса с помощью индикатора (например, мы знаем общее количество рассчитываемых сотрудников и хотим показать, сколько сотрудников уже рассчитано), то при вызове метода Состояние() необходимо указывать второй параметр метода, который определяет абсолютное значение индикатора прогресса. Минимальное значение индикатора прогресса всегда равно 0, а максимальное значение ‑ 100.
Копировать в буфер обменаСостояние("Выполняется проведение документов (" + ПредставлениеПериода(ДатаНачала, ДатаОкончания) + ")", ДляПрогресса, "Проводятся документы за " + ДатаОбработки + ". Всего: "+ Счетчик, БиблиотекаКартинок.Провести);
Если при вызове метода второй параметр не указан, то индикатор прогресса также не будет отображаться на панели состояния. При этом текст пояснения будет располагаться непосредственно под текстом основного описания:
Копировать в буфер обменаСостояние("Проведение выполнено, , "Всего обработано документов: " + КоличествоОбработанных + Символы.ПС + "Проведено документов: " + КоличествоПроведенных, БиблиотекаКартинок.Провести);

Рис. 213. Состояние без прогресса
Панель состояния автоматически исчезает с экрана по истечении небольшого времени после окончания работы фрагмента программы, вызвавшего появление панели состояния. Однако если навести на это окно курсор мыши, то окно будет существовать до тех пор, пока его принудительно не закроют или не уберут курсор мыши с площади панели состояния.
Примечание. Панель состояния располагается поверх всех окон текущего приложения, кроме модальных окон. Модальное окно выводится поверх панели состояния.
В веб-клиенте панель состояния реализована в виде отдельного окна веб-браузера. Обновление этого окна имеет особенности:
● Microsoft Internet Explorer. Состояние обновляется после каждого вызова метода Состояние().
● Mozilla Firefox. Состояние обновляется при каждом серверном вызове и после окончании выполнения программного кода на встроенном языке. Таким образом, если при выполнении программного кода на встроенном языке не было вызовов серверных методов, то панель состояния изменяться не будет.
● Google Chrome и Safari. Состояние обновляется только после окончания выполнения программного кода на встроенном языке.
6.3.4. Сообщения
В прикладном решении большинство сообщений логически связано с данными. Например, если при проведении документа на складе не хватает некоторого количества определенной номенклатуры, программист должен уведомить об этом пользователя.
Механизм сообщений позволяет разработчику сформировать сообщение, в котором можно указать, какой из реквизитов объекта стал причиной ошибки. При отображении в клиентском приложении сообщение может быть автоматически привязано к элементу формы, который редактирует этот реквизит, и рядом с ним будет выведено заданное сообщение.
Сообщения выводятся в панель сообщений, которая располагается в нижней части рабочей области. Высота панели сообщений не превышает 5 строк. Если в панели размещается большее количество сообщений ‑ появляется полоса прокрутки, но панель по высоте не увеличивается. Вручную также невозможно изменить высоту панели сообщений.
Для функционирования этого механизма в платформе существует объект СообщениеПользователю.

Рис. 214. Сообщения
Механизм сообщений ориентирован на то, чтобы сообщить пользователю, что запрошенное им действие выполнить не удалось. Например, проведение документа невозможно из-за отсутствия остатков товара на складе.
Если сообщение привязано к полю табличной части, то изменение порядка строк табличной части не оказывает влияния на корректность отображения сообщения.

Рис. 215. Сообщения в табличной части
Если строка, к которой было привязано сообщение, удалена, то сообщение будет привязано к элементу формы (см. здесь), который отображает табличную часть.
В том случае, если сообщение привязано к строке таблицы, связанной с реквизитом формы типа ДанныеФормыКоллекция, ДанныеФормыДерево или ДанныеФормыСтруктураИКоллекция, в этой таблице пользователем интерактивно выполнен поиск (с помощью соответствующей стандартной команды), в результате поиска строка, для которой создано сообщение, оказалась скрытой, то поиск будет автоматически отменен и сообщение будет показано в нужном месте. Если в таблице установлен программный отбор (свойство ОтборСтрок), то такой отбор не отменяется при отображении сообщения и выполняется позиционирование сообщения на таблицу в целом.
Сообщения, формируемые методом глобального контекста Сообщить() или при помощи объекта СообщениеПользователю, рекомендуется использовать только для информирования об ошибочных действиях. Также рекомендуется сопровождать вывод таких сообщений отказом от закрытия формы, в которой формируются сообщения, если сообщения формируются во время выполнения действия, подразумевающего закрытие формы. Если не блокировать закрытие формы, то возможны ситуации, когда сообщения будут выведены в панель сообщений закрываемой формы и эта панель будет закрыта одновременно со «своей» формой. В этом случае пользователь не увидит выведенные сообщения. Если требуется проинформировать пользователя о каком-либо событии, то рекомендуется использовать для этого метод ПоказатьОповещениеПользователя() (см. здесь).
Чтобы сообщение об ошибке оказалось привязанным к нужному элементу формы, системе нужно знать следующую информацию: какой реквизит, какого объекта информационной базы, каким элементом формы отображается. Заполнение вышеописанных свойств позволяет ответить на все вопросы:
● Задавая значение свойства ПутьКДанным, мы указываем, какой реквизит формы хранит данные нашего объекта информационной базы.
● Задавая свойство Поле, мы указываем реквизит объекта, для которого будет отображаться сообщение. Можно сказать, что в сообщении пойдет речь о данных ПутьКДанным.Поле, которые в базе данных идентифицируются значением КлючКДанным. Дальше система автоматически (на основании знаний о структуре формы) определит элемент формы, в котором отображается необходимая информация. Затем в привязке к этому элементу формы будет отображено сообщение.
Свойство Поле может содержать описание данных в следующем формате:
● Для реквизитов ‑ строка вида ИмяРеквизита, например, Поставщик, Поставщик.Родитель.
● Для реквизитов табличных частей ‑ строка вида ИмяТабличнойЧасти[ИндексСтроки].ИмяРекизита, например, Номенклатура[10].Количество.
● Для строк наборов записей ‑ строка вида [ИндексСтроки].ИмяРеквизита, например, [10].Валюта.
● Следует помнить, что если поле, к которому привязано сообщение, будет перенесено пользователем из таблицы на форму (для табличных частей и наборов записей), то сообщение перестанет привязываться к этому полю.
● Свойство ИдентификаторНазначения описывает, к какой форме должно быть привязано сообщение. Например, если сообщение формируется из формы, отображаемой на начальной странице, указание свойства ИдентификаторНазначения позволит отобразить сообщение, привязанное к той форме, из которой выполнялось формирование сообщения.
Если в сообщении свойство КлючДанных заполнено и не совпадает с ключевым значением основного реквизита текущей формы (ссылкой объекта или ключом записи регистра сведений), то открывается новая форма объекта, соответствующая значению свойства КлючДанных.
● Если у сообщения свойство ПутьКДанным не заполнено, то в него проставляется имя основного реквизита открытой формы объекта, вызывается показ сообщения во вновь открытой форме.
Кроме того, выполняется перенос всех сообщений со свойством КлючДанных, равным значению этого свойства текущего сообщения, из окна текущей формы в открытую форму. При этом перенесенным сообщениям аналогичным образом проставляется свойство ПутьКДанным, если оно не установлено.
Для заполнения пути к данным используется специальный механизм системы, который сохраняет информацию о соответствии элементов формы и объектов, а потом использует ее при вызове метода УстановитьДанные(). Таким образом, до выполнения процедур модуля объекта, в которых формируются сообщения, должно быть установлено соответствие между реквизитами формы и объектами, а в самом модуле разработчику нужно вызывать метод УстановитьДанные().
При выполнении стандартных действий с объектом в форме, например, при проведении документа, расширение формы само создает объект и само устанавливает соответствие. Поэтому в этих случаях разработчику не нужно предпринимать никаких действий.
Примечание. Если при записи нового объекта (плана обмена, справочника, документа, элемента плана счетов, элемента плана видов характеристик, элемента плана видов расчета, бизнес-процесса, задачи) в транзакции формировались сообщения пользователю, то при отмене транзакции в сообщениях очищаются ссылки на данный объект (свойство КлючДанных).
Ниже описывается, как установить соответствие, если объект создается из данных формы программно.
Связь между объектом и формой может быть задана явно, путем вызова метода, или неявно. Для явной установки соответствия используется метод УстановитьСоответствиеОбъектаИФормы(). В качестве второго параметра в метод передается информация о том, в какой форме отображается объект (свойство ИдентификаторФормы) и в каком реквизите указанной формы хранится объект данных (свойство Реквизит) для последующей установки правильного соответствия сообщений и элементов управления формы:
Копировать в буфер обменаПараметры = Новый Структура; Параметры.Вставить("ИдентификаторФормы", УникальныйИдентификатор); Параметры.Вставить("Реквизит", "Объект"); УстановитьСоответствиеОбъектаИФормы(Объект, Параметры);
Установленное соответствие будет существовать до тех пор, пока существует объект, для которого установлено соответствие.
Для того чтобы сообщение использовало данные соответствия объекта и имени реквизита, необходимо связать сообщение с данными через метод УстановитьДанные() объекта СообщениеПользователю.
Копировать в буфер обменаОбъектСправочник = СсылкаСправочник.ПолучитьОбъект(); Параметры = Новый Структура; Параметры.Вставить("ИдентификаторФормы", ИдентификаторФормы); Параметры.Вставить("Реквизит", "Объект"); УстановитьСоответствиеОбъектаИФормы(ОбъектСправочник, Параметры); ОбъектСправочник.ПроверитьЗаполнение();
Нужно понимать, что в методе УстановитьСоответствиеОбъектаИФормы() указывается имя реквизита для той формы, которая будет открыта по умолчанию для отображения элемента используемого справочника (в примере ОбъектСправочник). Тогда сообщения, которые создаются в обработчике проверки заполнения (ОбъектСправочник.ПроверитьЗаполнение()), будут корректно привязаны к реквизитам новой формы. Если свойство ИндентификаторФормы структуры Параметры (в примере выше) содержит уникальный идентификатор, который не соответствует ни одному экземпляру формы, то для отображения сообщения будет создана и открыта новая форма.
Получить соответствие можно методом ПолучитьСоответствиеОбъектаИФормы(). Получить соответствие можно до тех пор, пока существует объект, для которого оно установлено.
Копировать в буфер обменаОписаниеСоответствия = ПолучитьСоответствиеОбъектаИФормы(Объект);
Если для переданного объекта существует соответствие с реквизитом, имя реквизита будет возвращено как результат работы функции. Кроме того, соответствие может быть установлено формой при использовании метода РеквизитФормыВЗначение(). В большинстве случаев рекомендуется использовать именно этот способ.
Копировать в буфер обмена// Код в модуле документа. &НаСервере Процедура ОбработкаПроведения() ... Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "В строке 10 табличной части " + "Номенклатура не хватает " + НедостающееКоличество + " " + ЕдиницаИзмеренияНоменклатуры; Сообщение.Поле = "Номенклатура[9].Количество"; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); // Сообщение будет показано в форме и привязано к // элементу управления, связанному с полем // Количество в 10 й строке табличной части // Номенклатура. ... КонецПроцедуры;
В случае если создание сообщений пользователю (с помощью объекта СообщениеПользователю) выполняется во время контекстного или неконтекстного серверного вызова из формы, вызова из общего модуля или из модуля общей команды, вывод сообщений блокируется. Созданные сообщения будут показаны пользователю после возврата управления на клиентскую сторону. Для получения списка непоказанных сообщений используется метод ПолучитьСообщенияПользователю().
Если в поле ввода, с которым связано сообщение, находится некорректное значение, то в веб-клиенте можно перейти в окно сообщений. В других клиентских приложениях такой переход выполнить невозможно.
6.3.5. Работа сочетаний клавиш
В независимом вспомогательном окне срабатывают сочетания клавиш:
● команд панели навигации главного окна;
● команд панели действий главного окна;
● команд самого вспомогательного окна (как команд формы, так и команд панели навигации).
При этом сочетания клавиш команд основного окна срабатывают, даже если команда, вызываемая тем или иным сочетанием клавиш, невидима, например, была скрыта пользователем. Во вспомогательных окнах не срабатывают сочетания клавиш скрытых команд панели навигации формы и скрытых элементов формы.
В блокирующих окнах работают только сочетания клавиш самих окон, а сочетания клавиш команд главного окна не поддерживаются.
6.3.6. Работа со списком форм
Система позволяет получить список форм, которые в данный момент отображаются в системе, включая формы, расположенные на начальной странице (рабочем столе). Этот список можно получить с помощью функции глобального контекста ПолучитьОкна(). Затем следует проанализировать содержимое полученной коллекции ОкнаКлиентскогоПриложения (состоит из объектов типа ОкноКлиентскогоПриложения):
● Окно с установленным свойством Основное описывает основное окно приложения. Свойство Содержимое для такого окна всегда содержит пустой массив.
● Окно с установленным свойством НачальнаяСтраница описывает начальную страницу (рабочий стол). При этом свойство Содержимое содержит список форм, которые в данный момент размещены на начальной странице (рабочем столе). Более подробное описание программного управления составом форм начальной страницы (рабочего стола) см. здесь.
● Остальные окна описывают вспомогательные окна клиентского приложения. При этом свойство Содержимое для такого окна содержит список форм, открытых в этом окне. Основная форма такого окна будет располагаться в первом элементе массива.
Следует помнить, что порядок элементов в коллекции ОкнаКлиентскогоПриложения не определен. Не рекомендуется использовать в прикладных решениях какие-либо предположения о порядке следования элементов в этой коллекции.
Следующий пример отобразит все окна клиентского приложения, выведет их свойства и список форм, находящихся в том или ином окне клиентского приложения (при наличии таковых).
Пример отображения списка окон:
Копировать в буфер обменаОкна = ПолучитьОкна(); Для Каждого Окно Из Окна Цикл Сообщить("Заголовок: " + Окно.Заголовок); Сообщить("Основное окно приложения: " + Окно.Основное); Сообщить("Начальная страница: " + Окно.НачальнаяСтраница); Сообщить("Форм в окне: " + Окно.Содержимое.Количество()); Если Окно.Содержимое.Количество() Тогда Для каждого Форма Из Окно.Содержимое Цикл Сообщить(" Форма : " + Форма.ИмяФормы); КонецЦикла; КонецЕсли; Сообщить("-----"); КонецЦикла
6.3.7. Использование списка переходов
Операционная система Microsoft Windows 7 и старше (версия ОС 6.1 и старше), а также операционная система Linux с оболочкой рабочего стола Unity, предоставляют пользователю возможность использовать так называемые списки переходов (jump list). Данная возможность предоставляет возможность пользователю быстрого перехода к объектам используемой программы (файлы, папки и т. д.) путем нажатия правой кнопки мыши на кнопке командной панели, связанной с данным приложением.
Некоторые объекты (по выбору пользователя) можно закрепить в данном меню с помощью специальной кнопки. На рис. 216 приведен пример списка переходов для Проводника в ОС Windows 7.

Рис. 216. Список переходов в панели задач
Подробное описание списка переходов можно получить в описании соответствующей операционной системы.
Система «1С:Предприятие» также предоставляет список переходов. В качестве объекта в данном списке выступает информационная база. Список переходов синхронизирован со списком последних выбранных информационных баз окна программы запуска, даже в том случае, если отображение этого списка в окне программы запуска отключено (подробнее о настройке окна запуска см. здесь).

Рис. 217. Список переходов «1С:Предприятия»
При использовании списков переходов следует помнить следующие особенности поведения системы:
● Запуск информационной базы из списка переходов всегда происходит в режиме 1С:Предприятия.
● Для отображения списка переходов, закрепление следует выполнять с помощью команды Закрепить на панели задач у ярлыка 1C Предприятие, созданного программой установки системы «1С:Предприятие» на рабочем столе.
6.3.8. Установка кнопок окна предпросмотра панели задач
В операционной системе Microsoft Windows 7 и старше, пользователю доступа функция Aero Peak. Эта функция предоставляет возможность увидеть эскизы всех окон, связанных с выбранной программой, наведя курсор мыши на соответствующую кнопку панели задач. Некоторые программы размещают в этих эскизах специальные кнопки, облегчающие управление программой. Например, программа Проигрыватель Windows Media размещает в окне эскиза кнопки перехода по трекам и остановки/запуска воспроизведения.

Рис. 218. Эскиз Проигрывателя Windows Media
Система «1С:Предприятие» предоставляет возможность размещать аналогичные кнопки в эскизах, связанных с запущенными информационными базами. Для этого следует использовать специальное свойство глобального контекста ПанельЗадачОС. Рассмотрим пример использования данного свойства.
В качестве примера добавим в окно эскиза две кнопки:
1. Оформить заказ клиента;
2. Оформить продажу.
Будем создавать кнопки при начале работы системы:
Копировать в буфер обменаПроцедура ПередНачаломРаботыСистемы(Отказ) Кнопки = Новый Массив(); Кнопка1 = Новый Структура(); Кнопка1.Вставить("Картинка", БиблиотекаКартинок.ЗаказКлиента); Кнопка1.Вставить("Заголовок", "Оформить новый заказ клиента"); Оповещение = Новый ОписаниеОповещения("ДействияКнопок", ОповещенияКнопок, "ОформитьЗаказ"); Кнопка1.Вставить("Действие", Оповещение); Кнопка2 = Новый Структура(); Кнопка2.Вставить("Картинка", БиблиотекаКартинок.НоваяПродажа); Кнопка2.Вставить("Заголовок", "Оформить новую продажу"); Оповещение = Новый ОписаниеОповещения("ДействияКнопок", ОповещенияКнопок, "ОформитьПродажу"); Кнопка2.Вставить("Действие", Оповещение); Кнопки.Добавить(Кнопка1); Кнопки.Добавить(Кнопка2); ПанельЗадачОС.УстановитьКнопки(Кнопки); КонецПроцедуры
При нажатии на какую-либо из созданных кнопок будет срабатывать обработчик, в котором и будет выполняться нужное действие. Однако модуль управляемого приложения не может содержать обработчиков оповещения, поэтому следует создать (или использовать) клиентский общий модуль, в котором будет размещен обработчик. В примере используется общий модуль ОповещенияКнопок и обработчик ДействияКнопок().
Копировать в буфер обменаПроцедура ДействияКнопок(ДополнительныеПараметры) Экспорт Если ДополнительныеПараметры = "ОформитьЗаказ" Тогда // здесь будет создаваться документ заказа ИначеЕсли ДополнительныеПараметры = "ОформитьПродажу" Тогда // здесь будет создаваться документ продажи КонецЕсли; КонецПроцедуры
В результате окно эскиза для запущенной информационной базы с указанными выше изменениями будет иметь следующий вид:

Рис. 219. Кнопки в окне эскиза на панели задач
Теперь для создания заказа и продажи нет необходимости разворачивать основное окно приложения и искать в командном интерфейсе нужные команды.
При использовании данного механизма следует помнить о следующих особенностях и ограничениях:
● Максимальное количество кнопок в окне эскиза ‑ 7 штук.
● После первого создания нельзя увеличить количество кнопок в окне эскиза. Допускается изменение и скрытие ранее созданных кнопок.
● Картинка кнопки может быть любой, но рекомендуется использовать формат .ico, в котором присутствуют картинки размером 16x16, 20x20 и 24x24 (для 96, 120 и 144 DPI соответственно).
● В структуре, которая описывающет каждую кнопку, обязательными являются все три свойства. Опускать свойства нельзя.
При работе под управлением ОС Linux, создание кнопок в окне эскиза не ведет к каким-либо внешним проявлениям.
6.3.9. Управление значком панели задач
При работе «1С:Предприятия» возникают ситуации, когда «внутри» системы что-то происходит и требуется привлечь внимание пользователя. Например, встроенная почтовая система получила очередную порцию электронной корреспонденции, и увеличился счетчик непрочитанных писем или закончилось какое-то длительное действие и требуется привлечь внимание пользователя.
В том случае, если система работает под управлением ОС Windows 7 (и старше), прикладной разработчик может реализовать следующие возможности:
1. Установить значок на пиктограмму информационной базы, отображаемой на командной панели. В качестве значка выступает или картинка или число.
2. Инициировать мигание кнопки на командной панели, связанной с информационной базой.
Рассмотрим примеры более подробно.
Установка значка кнопки панели задач
Допустим, что в рамках информационной системы работает специальный механизм обмена заданиями и требуется отображать пользователю, сколько заданий для него есть в системе на данный момент. Для этого используем обработчик ожидания, который каждые 60 секунд (например) будет проверять, сколько заданий установлено пользователю и выводить это число в кнопку, соответствующую информационной базе на командной панели.
Копировать в буфер обменаПроцедура ПередНачаломРаботыСистемы(Отказ) ПодключитьОбработчикОжидания("ПроцедураОжидания", 60, Ложь); КонецПроцедуры Процедура ПроцедураОжидания() Экспорт Счетчик = Сообщения.ПолучитьКоличествоЗаданий(); Если Счетчик = 0 Тогда ПанельЗадачОС.УдалитьНаклейку(); Иначе ПанельЗадачОС.УстановитьНаклейку(Счетчик, Ложь); КонецЕсли; КонецПроцедуры
Если для пользователя нет заданий ‑ ранее установленное число будет удаляться со значка. Если второй параметр метода УстановитьНаклейку() установлен в значение Истина, то значок будет удален системой при выборе соответствующего приложения.
Мигание кнопкой панели задач
Отображение значка на кнопки панели задач хорошо использовать, когда в приложении есть некоторая перечислимая информация. В этом случае отображение «количества» может оказаться достаточно. В тех ситуациях, когда в системе заканчивается выполнение какого-либо длительного процесса, эту ситуацию нельзя выразить установкой какого-то значка на кнопке панели задач. Однако имеется возможность сигнализировать об этом (окончании процесса) миганием кнопки панели задач.
Для управления такой сигнализацией служит метод ПанельЗадачОС.Сигнализировать(). Поведение системы при вызове этого метода зависит от используемой ОС.
Рассмотрим пример, в котором будет установлена обработка ожидания на интервал 120 секунд, который (интервал) будет имитировать длительный процесс. По окончании интервала будет выполняться 5 миганий кнопкой панели задач.
Копировать в буфер обменаПроцедура ПередНачаломРаботыСистемы(Отказ) ПодключитьОбработчикОжидания("ПроцедураОжидания", 120, Истина); КонецПроцедуры Процедура ПроцедураОжидания() Экспорт ПанельЗадачОС.Сигнализировать(5); КонецПроцедуры
Через 120 секунд после запуска клиентского приложения, кнопка панели задач, связанная с приложением, выполнит 5 морганий подряд.
Иконки на значке приложения в панели задач ОС Windows отображаются только при выключенном флажке Использовать маленькие значки в настройках панели задач. При работе под управлением Ubunty Unity, может не происходить никаких визуальных эффектов, если система «1С:Предприятие» запущена под правами суперпользователя (root).
6.4. Порядок разработки командного интерфейса
При разработке командного интерфейса обычно выполняется следующая последовательность действий:
● в начале разработки конфигурации определяется ее структура с точки зрения предметной области, т. е. создается дерево подсистем конфигурации;
● создается состав ролей, т. е. определяется, для кого предназначена данная конфигурация;
● при создании новых объектов конфигурации (справочников, документов и т. д.), как правило, они сразу относятся к тем или иным подсистемам, для объектов назначаются права доступа по ролям;
● если не устраивает стандартное расположение команд и их видимость по умолчанию, то выполняется редактирование свойства Командный интерфейс необходимых подсистем и редактирование состава команд тех форм, в которых автоматически размещены параметризованные команды необходимых объектов (перехода к подчиненному списку и ввода на основании).
Уже эти минимальные действия приведут к тому, что в соответствующих разделах командного интерфейса появятся команды открытия форм списков объектов, команды ввода новых объектов (если включена их видимость в редакторе фрагмента командного интерфейса). Кроме того, если это определено в свойствах объекта, в формах других объектов конфигурации появятся команды ввода на основании, перехода к списку по регистратору, перехода к списку по владельцу и т. д.
Рассмотрим пример создания документа Расход товара. При его создании мы сделаем следующее:
● укажем, что документ будет относиться к подсистемам Торговый учет и Бухгалтерия;
● установим ролям Менеджер по продажам и Администратор права на работу с этим документом;
● укажем, что документ вводится на основании документов Счет и Заказ покупателя;
● укажем, что он является регистратором для регистра Остатки товаров на складах.
Эти действия приведут к появлению команды Расход товара в панели навигации раздела Торговый учет в том случае, если пользователь обладает ролью Менеджер по продажам или административными правами.
Кроме того, в формах документов Счет и Заказ покупателя появится команда подменю Создать на основании, предназначенная для ввода расходной накладной. Нам не понадобилось редактировать интерфейсы для пользователей с такими ролями и формы документов Счет и Заказ покупателя.
Стандартное представление команды перехода к списку накладных (Расход товара) может выглядеть неточным. Для его переопределения заполним свойство Представление списка документа РасходТовара и укажем там Продажи.
Допустим, что нас не устраивает представление объекта по умолчанию (которое участвует в представлении команд) и мы хотим изменить его так, чтобы представление команды ввода на основании читалось следующим образом: Продажа: создать на основании. Для этого необходимо заполнить свойство Представление объекта документа Расход товара текстом Продажа.
Теперь обратим внимание на то, что при стандартном размещении команды она находится в середине списка команд раздела Торговый учет. Предположим, что команда достаточно важна для этого раздела. Мы переходим к редактору Все подсистемы (или к редактору командного интерфейса подсистемы Торговый учет) и переносим команду в группу Важное. Раздел Бухгалтерия при этом не трогаем, оставляя там размещение команды по умолчанию.
Наконец, обратим внимание на видимость команд по умолчанию. В форме документа Расход товара появилась команда перехода к списку записей регистра Остатки товаров на складах, но она по умолчанию невидима. Предположим, что эта команда важна для администратора системы и действительно по умолчанию не нужна менеджеру. Для того чтобы это отразить, создадим форму документа Расход товара, перейдем к редактированию командного интерфейса и для команды перехода к списку регистра установим видимость для роли Администратор, а видимость для менеджера менять не будем.
Для администратора системы с его широкими правами доступа число команд оказалось слишком большим. Предположим далее, что командой перехода к списку расходных накладных он будет пользоваться крайне редко. Для того чтобы облегчить его командный интерфейс, опять перейдем к редактированию команд в редакторе Все подсистемы и для нашей команды снимем видимость для роли Администратор.
Также можно для менеджера по продажам установить видимость по умолчанию для команды добавления документа Расход товара в панели действий, чтобы он смог вызывать ввод этого документа без обращения к списку документов.
В процессе работы с конфигурацией пользователь может настраивать видимость команд по своему усмотрению.